package com.tedu.controller;

import com.tedu.pojo.User;
import com.tedu.service.UserService;
import com.tedu.vo.PageResult;
import com.tedu.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Author：毕龙
 * Date: 2022/9/15 15:05
 * @CrossOrigin 解决ajax跨域问题
 */
@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;


    @GetMapping("/findAll")
    public List<User> findAll(){
        return userService.findAll();
    }

    /**
     * 业务需求：实现用户登录的操作
     * url: /user/login
     * 请求类型 ： post
     * 参数 username password   json串
     * 返回值 SysResult对象(token密钥)
     */
    @PostMapping("/login")
    public SysResult login(@RequestBody User user ){
        //调用业务需求
       String token = userService.login(user);
        if(token == null){
            return SysResult.fail();//表示用户登录失败
        }
        return SysResult.success(token);//表示用户登录成功
    }


    /**
     * 业务需求：分页查询数据
     * url:/user/list
     * 类型：get
     * 参数：PageResult对象
     *     http://localhost:8091/user/list?query=家&pageNum=1&pageSize=10
     *  返回值对象：SysResult(PageResult)
     */
    @GetMapping("/list")
    public SysResult findList(PageResult pageResult){
        pageResult = userService.findList(pageResult);
        return SysResult.success(pageResult);
    }

    /**
     * 需求分析：
     *  请求路径：/user/status/{id}/{status}
     *  请求类型：PUT
     *  请求参数：用户id  状态值数据
     *  返回值:SysResult
     */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(User user){
        userService.updateStatus(user);
        return SysResult.success();
    }

    /**
     * 需求分析： 删除业务
     *  请求路径：/user/{id}
     *  请求类型：delete
     *  请求的参数：id
     *  返回值：SysResult对象
     */
    @DeleteMapping("/{id}")
    public SysResult deleteUser(@PathVariable Integer id){
        userService.deleteUser(id);
        return SysResult.success();
    }

    /**
     * 需求分析 ： 用户新增
     *  请求路径：/user/addUser
     *  请求类型：POST
     *  请求的参数：整个form表单封装js对象
     *  返回值：SysResult对象
     */
    @PostMapping("/addUser")
    public SysResult addUser(@RequestBody User user){
        userService.addUser(user);
        return SysResult.success();
    }

    /**
     * 需求分析：
     *  请求路径：/user/{id}
     *  请求类型：GET
     *  返回值对象：SysResult
     */
    @GetMapping("/{id}")
    public SysResult findUserById(@PathVariable Integer id){
        return SysResult.success(userService.findUserById(id));
    }

    /**
     * 完成用户更新操作
     * 请求路径 /user/updateUser
     * 类型PUT
     * 参数User对象
     */
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){

           int i=1/0;
           userService.updateUser(user);
           return SysResult.success();


    }




}
